<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/irqflags.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/irqflags.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * include/linux/irqflags.h</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * IRQ flags tracing: follow the state of the hardirq and softirq flags and</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * provide callbacks for transitions between ON and OFF states.</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> *</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * This file gets included from lowlevel asm headers too, to provide</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * wrapped versions of the local_irq_*() APIs, based on the</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * raw_local_irq_*() macros from the lowlevel headers.</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> */</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RSQUNFX0lSUUZMQUdTX0hfMA__"><span class="b">_LINUX_TRACE_IRQFLAGS_H</span></a>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RSQUNFX0lSUUZMQUdTX0hfMA__"><span class="b">_LINUX_TRACE_IRQFLAGS_H</span></a>
<a name="13" /><span class="Maybe">      13:</span> 
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">irqflags</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="16" /><span class="Maybe">      16:</span> 
<a name="17" /><span class="False">      17:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRACE_IRQFLAGS</span>
<a name="18" /><span class="False">      18:</span>   <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfb25fMA__"><span class="b">trace_softirqs_on</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">)</span><span class="f">;</span>
<a name="19" /><span class="False">      19:</span>   <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfb2ZmXzA_"><span class="b">trace_softirqs_off</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">)</span><span class="f">;</span>
<a name="20" /><span class="False">      20:</span>   <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb25fMA__"><span class="b">trace_hardirqs_on</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="21" /><span class="False">      21:</span>   <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb2ZmXzA_"><span class="b">trace_hardirqs_off</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="22" /><span class="False">      22:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9jb250ZXh0XzA_"><span class="b">trace_hardirq_context</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">hardirq_context</span><span class="f">)</span>
<a name="23" /><span class="False">      23:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycV9jb250ZXh0XzA_"><span class="b">trace_softirq_context</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">softirq_context</span><span class="f">)</span>
<a name="24" /><span class="False">      24:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycXNfZW5hYmxlZF8w"><span class="b">trace_hardirqs_enabled</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">hardirqs_enabled</span><span class="f">)</span>
<a name="25" /><span class="False">      25:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfZW5hYmxlZF8w"><span class="b">trace_softirqs_enabled</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">softirqs_enabled</span><span class="f">)</span>
<a name="26" /><span class="False">      26:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9lbnRlcl8w"><span class="b">trace_hardirq_enter</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">hardirq_context</span><span class="f">++</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="27" /><span class="False">      27:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9leGl0XzA_"><span class="b">trace_hardirq_exit</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">hardirq_context</span><span class="f">--</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="28" /><span class="False">      28:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9ja2RlcF9zb2Z0aXJxX2VudGVyXzA_"><span class="b">lockdep_softirq_enter</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">softirq_context</span><span class="f">++</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="29" /><span class="False">      29:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9ja2RlcF9zb2Z0aXJxX2V4aXRfMA__"><span class="b">lockdep_softirq_exit</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">softirq_context</span><span class="f">--</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="30" /><span class="False">      30:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_SU5JVF9UUkFDRV9JUlFGTEFHU18w"><span class="b">INIT_TRACE_IRQFLAGS</span></a>    <span class="f">.</span><span class="b">softirqs_enabled</span> <span class="f">=</span> <span class="c">1</span><span class="f">,</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">else</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb25fMA__"><span class="b">trace_hardirqs_on</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb2ZmXzA_"><span class="b">trace_hardirqs_off</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfb25fMA__"><span class="b">trace_softirqs_on</span></a><span class="f">(</span><span class="b">ip</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfb2ZmXzA_"><span class="b">trace_softirqs_off</span></a><span class="f">(</span><span class="b">ip</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9jb250ZXh0XzA_"><span class="b">trace_hardirq_context</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="c">0</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycV9jb250ZXh0XzA_"><span class="b">trace_softirq_context</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="c">0</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycXNfZW5hYmxlZF8w"><span class="b">trace_hardirqs_enabled</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="c">0</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2Vfc29mdGlycXNfZW5hYmxlZF8w"><span class="b">trace_softirqs_enabled</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span>    <span class="c">0</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9lbnRlcl8w"><span class="b">trace_hardirq_enter</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfaGFyZGlycV9leGl0XzA_"><span class="b">trace_hardirq_exit</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9ja2RlcF9zb2Z0aXJxX2VudGVyXzA_"><span class="b">lockdep_softirq_enter</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9ja2RlcF9zb2Z0aXJxX2V4aXRfMA__"><span class="b">lockdep_softirq_exit</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_SU5JVF9UUkFDRV9JUlFGTEFHU18w"><span class="b">INIT_TRACE_IRQFLAGS</span></a>
<a name="45" /><span class="Maybe">      45:</span> <span class="f">#</span><span class="n">endif</span>
<a name="46" /><span class="Maybe">      46:</span> 
<a name="47" /><span class="False">      47:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_IRQSOFF_TRACER</span><span class="f">)</span> <span class="f">||</span> \
<a name="48" /><span class="False">      48:</span>     <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_PREEMPT_TRACER</span><span class="f">)</span>
<a name="49" /><span class="False">      49:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_noref.html#_c3RvcF9jcml0aWNhbF90aW1pbmdzXzA_"><span class="b">stop_critical_timings</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="50" /><span class="False">      50:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_noref.html#_c3RhcnRfY3JpdGljYWxfdGltaW5nc18w"><span class="b">start_critical_timings</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">#</span><span class="n">else</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RvcF9jcml0aWNhbF90aW1pbmdzXzA_"><span class="b">stop_critical_timings</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RhcnRfY3JpdGljYWxfdGltaW5nc18w"><span class="b">start_critical_timings</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="f">#</span><span class="n">endif</span>
<a name="55" /><span class="Maybe">      55:</span> 
<a name="56" /><span class="Maybe">      56:</span> <span class="k">/*</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * Wrap the arch provided IRQ routines to provide appropriate checks.</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> */</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9kaXNhYmxlXzA_"><span class="b">raw_local_irq_disable</span></a><span class="f">(</span><span class="f">)</span>        <span class="b">arch_local_irq_disable</span><span class="f">(</span><span class="f">)</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9lbmFibGVfMA__"><span class="b">raw_local_irq_enable</span></a><span class="f">(</span><span class="f">)</span>        <span class="b">arch_local_irq_enable</span><span class="f">(</span><span class="f">)</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="62" /><span class="Maybe">      62:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="63" /><span class="Maybe">      63:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="64" /><span class="Maybe">      64:</span>         <span class="b">flags</span> <span class="f">=</span> <span class="b">arch_local_irq_save</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>        \
<a name="65" /><span class="Maybe">      65:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="67" /><span class="Maybe">      67:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="68" /><span class="Maybe">      68:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="69" /><span class="Maybe">      69:</span>         <span class="b">arch_local_irq_restore</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="70" /><span class="Maybe">      70:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmF3X2xvY2FsX3NhdmVfZmxhZ3NfMA__"><span class="b">raw_local_save_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="72" /><span class="Maybe">      72:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="73" /><span class="Maybe">      73:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="74" /><span class="Maybe">      74:</span>         <span class="b">flags</span> <span class="f">=</span> <span class="b">arch_local_save_flags</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>    \
<a name="75" /><span class="Maybe">      75:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cmF3X2lycXNfZGlzYWJsZWRfZmxhZ3NfMA__"><span class="b">raw_irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="77" /><span class="Maybe">      77:</span>     <span class="f">(</span><span class="f">{</span>                        \
<a name="78" /><span class="Maybe">      78:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="79" /><span class="Maybe">      79:</span>         <span class="b">arch_irqs_disabled_flags</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="80" /><span class="Maybe">      80:</span>     <span class="f">}</span><span class="f">)</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmF3X2lycXNfZGlzYWJsZWRfMA__"><span class="b">raw_irqs_disabled</span></a><span class="f">(</span><span class="f">)</span>        <span class="f">(</span><span class="b">arch_irqs_disabled</span><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmF3X3NhZmVfaGFsdF8w"><span class="b">raw_safe_halt</span></a><span class="f">(</span><span class="f">)</span>            <span class="b">arch_safe_halt</span><span class="f">(</span><span class="f">)</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="k">/*</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k"> * The local_irq_*() APIs are equal to the raw_local_irq*()</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="k"> * if !TRACE_IRQFLAGS.</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="k"> */</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RSQUNFX0lSUUZMQUdTX1NVUFBPUlRfMA__"><span class="b">CONFIG_TRACE_IRQFLAGS_SUPPORT</span></a>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX2VuYWJsZV8w"><span class="b">local_irq_enable</span></a><span class="f">(</span><span class="f">)</span> \
<a name="90" /><span class="Maybe">      90:</span>     <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb25fMA__"><span class="b">trace_hardirqs_on</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9lbmFibGVfMA__"><span class="b">raw_local_irq_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX2Rpc2FibGVfMA__"><span class="b">local_irq_disable</span></a><span class="f">(</span><span class="f">)</span> \
<a name="92" /><span class="Maybe">      92:</span>     <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9kaXNhYmxlXzA_"><span class="b">raw_local_irq_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb2ZmXzA_"><span class="b">trace_hardirqs_off</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3NhdmVfMA__"><span class="b">local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>                \
<a name="94" /><span class="Maybe">      94:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="95" /><span class="Maybe">      95:</span>         <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="96" /><span class="Maybe">      96:</span>         <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb2ZmXzA_"><span class="b">trace_hardirqs_off</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>            \
<a name="97" /><span class="Maybe">      97:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="98" /><span class="Maybe">      98:</span> 
<a name="99" /><span class="Maybe">      99:</span> 
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3Jlc3RvcmVfMA__"><span class="b">local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="101" /><span class="Maybe">     101:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="102" /><span class="Maybe">     102:</span>         <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_cmF3X2lycXNfZGlzYWJsZWRfZmxhZ3NfMA__"><span class="b">raw_irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>    \
<a name="103" /><span class="Maybe">     103:</span>             <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="104" /><span class="Maybe">     104:</span>             <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb2ZmXzA_"><span class="b">trace_hardirqs_off</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>        \
<a name="105" /><span class="Maybe">     105:</span>         <span class="f">}</span> <span class="m">else</span> <span class="f">{</span>                \
<a name="106" /><span class="Maybe">     106:</span>             <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb25fMA__"><span class="b">trace_hardirqs_on</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>        \
<a name="107" /><span class="Maybe">     107:</span>             <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="108" /><span class="Maybe">     108:</span>         <span class="f">}</span>                    \
<a name="109" /><span class="Maybe">     109:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9jYWxfc2F2ZV9mbGFnc18w"><span class="b">local_save_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>                \
<a name="111" /><span class="Maybe">     111:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="112" /><span class="Maybe">     112:</span>         <a href="cpu.c_macros_noref.html#_cmF3X2xvY2FsX3NhdmVfZmxhZ3NfMA__"><span class="b">raw_local_save_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="113" /><span class="Maybe">     113:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="114" /><span class="Maybe">     114:</span> 
<a name="115" /><span class="Maybe">     115:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aXJxc19kaXNhYmxlZF9mbGFnc18w"><span class="b">irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>            \
<a name="116" /><span class="Maybe">     116:</span>     <span class="f">(</span><span class="f">{</span>                        \
<a name="117" /><span class="Maybe">     117:</span>         <a href="cpu.c_macros_ref.html#_cmF3X2lycXNfZGlzYWJsZWRfZmxhZ3NfMA__"><span class="b">raw_irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="118" /><span class="Maybe">     118:</span>     <span class="f">}</span><span class="f">)</span>
<a name="119" /><span class="Maybe">     119:</span> 
<a name="120" /><span class="Maybe">     120:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aXJxc19kaXNhYmxlZF8w"><span class="b">irqs_disabled</span></a><span class="f">(</span><span class="f">)</span>                    \
<a name="121" /><span class="Maybe">     121:</span>     <span class="f">(</span><span class="f">{</span>                        \
<a name="122" /><span class="Maybe">     122:</span>         <span class="m">unsigned</span> <span class="m">long</span> <span class="b">_flags</span><span class="f">;</span>            \
<a name="123" /><span class="Maybe">     123:</span>         <a href="cpu.c_macros_noref.html#_cmF3X2xvY2FsX3NhdmVfZmxhZ3NfMA__"><span class="b">raw_local_save_flags</span></a><span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="124" /><span class="Maybe">     124:</span>         <a href="cpu.c_macros_ref.html#_cmF3X2lycXNfZGlzYWJsZWRfZmxhZ3NfMA__"><span class="b">raw_irqs_disabled_flags</span></a><span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="125" /><span class="Maybe">     125:</span>     <span class="f">}</span><span class="f">)</span>
<a name="126" /><span class="Maybe">     126:</span> 
<a name="127" /><span class="Maybe">     127:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2FmZV9oYWx0XzA_"><span class="b">safe_halt</span></a><span class="f">(</span><span class="f">)</span>                \
<a name="128" /><span class="Maybe">     128:</span>     <span class="m">do</span> <span class="f">{</span>                    \
<a name="129" /><span class="Maybe">     129:</span>         <a href="cpu.c_macros_ref.html#_dHJhY2VfaGFyZGlycXNfb25fMA__"><span class="b">trace_hardirqs_on</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>        \
<a name="130" /><span class="Maybe">     130:</span>         <a href="cpu.c_macros_noref.html#_cmF3X3NhZmVfaGFsdF8w"><span class="b">raw_safe_halt</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>        \
<a name="131" /><span class="Maybe">     131:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="132" /><span class="Maybe">     132:</span> 
<a name="133" /><span class="Maybe">     133:</span> 
<a name="134" /><span class="False">     134:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_TRACE_IRQFLAGS_SUPPORT */</span>
<a name="135" /><span class="False">     135:</span> 
<a name="136" /><span class="False">     136:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX2VuYWJsZV8w"><span class="b">local_irq_enable</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9lbmFibGVfMA__"><span class="b">raw_local_irq_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="137" /><span class="False">     137:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX2Rpc2FibGVfMA__"><span class="b">local_irq_disable</span></a><span class="f">(</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9kaXNhYmxlXzA_"><span class="b">raw_local_irq_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="138" /><span class="False">     138:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3NhdmVfMA__"><span class="b">local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>                    \
<a name="139" /><span class="False">     139:</span>     <span class="m">do</span> <span class="f">{</span>                            \
<a name="140" /><span class="False">     140:</span>         <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>            \
<a name="141" /><span class="False">     141:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="142" /><span class="False">     142:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3Jlc3RvcmVfMA__"><span class="b">local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="143" /><span class="False">     143:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG9jYWxfc2F2ZV9mbGFnc18w"><span class="b">local_save_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_noref.html#_cmF3X2xvY2FsX3NhdmVfZmxhZ3NfMA__"><span class="b">raw_local_save_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="144" /><span class="False">     144:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aXJxc19kaXNhYmxlZF8w"><span class="b">irqs_disabled</span></a><span class="f">(</span><span class="f">)</span>        <span class="f">(</span><a href="cpu.c_macros_noref.html#_cmF3X2lycXNfZGlzYWJsZWRfMA__"><span class="b">raw_irqs_disabled</span></a><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="145" /><span class="False">     145:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aXJxc19kaXNhYmxlZF9mbGFnc18w"><span class="b">irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_cmF3X2lycXNfZGlzYWJsZWRfZmxhZ3NfMA__"><span class="b">raw_irqs_disabled_flags</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">)</span>
<a name="146" /><span class="False">     146:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2FmZV9oYWx0XzA_"><span class="b">safe_halt</span></a><span class="f">(</span><span class="f">)</span>        <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_noref.html#_cmF3X3NhZmVfaGFsdF8w"><span class="b">raw_safe_halt</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="147" /><span class="False">     147:</span> 
<a name="148" /><span class="Maybe">     148:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_TRACE_IRQFLAGS_SUPPORT */</span>
<a name="149" /><span class="Maybe">     149:</span> 
<a name="150" /><span class="True">     150:</span> <span class="f">#</span><span class="n">endif</span>
<a name="151" /><span class="True">     151:</span> </pre>
  </body>
</html>
